package com.wish.blessingroad.util.WeChat;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.wish.blessingroad.util.Http;
import org.apache.commons.lang3.StringUtils;

import java.util.Random;

/**
 * 微信用户登录
 *
 * @author donghaocheng
 * @version v1.1.0
 * @Created Date: 2019/2/20 9:27
 */

public class WeChatUtil {

    /**
     * 获取access_token
     * 用code换取access_token,同时可以获取到openid
     appid	string		是	小程序 appId
     secret	string		是	小程序 appSecret
     js_code	string		是	登录时获取的 code
     grant_type	string		是	授权类型，此处只需填写 authorization_code
     * 结果
     openid	string	用户唯一标识
     session_key	string	会话密钥
     unionid	string	用户在开放平台的唯一标识符，在满足 UnionID 下发条件的情况下会返回，详见 UnionID 机制说明。
     errcode	number	错误码
     errmsg	string	错误信息
     */
    public static String getToken(String code, String appId, String appSecret) {
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=authorization_code";
        String result = null;
        try {
            result = Http.httpGet(url, "utf-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        Gson gson = new Gson();
        if (StringUtils.isNotEmpty(result)) {
            System.out.println("========"+gson.fromJson(result,JsonObject.class).get("openid").getAsString());
            return gson.fromJson(result,JsonObject.class).get("openid").getAsString();
        }
        return null;
    }

    /**
     * StringUtils工具类方法 获取一定长度的随机字符串，范围0-9，a-z
     *
     * @param length：指定字符串长度
     * @return 一定长度的随机字符串
     */
    public static String getRandomStringByLength(int length) {
        String base = "abcdefghijklmnopqrstuvwxyz0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(base.length());
            sb.append(base.charAt(number));
        }
        return sb.toString();
    }
}
